﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using System.Configuration;
using System.Data.SqlClient;

namespace QLTTAN.Form
{
    public partial class frmCoSoDuLieu : DevExpress.XtraEditors.XtraForm
    {
        public string TenCSDL = "Chưa Có CSDL";

        public frmCoSoDuLieu()
        {
            InitializeComponent();
        }

        private void frmCoSoDuLieu_Load(object sender, EventArgs e)
        {

        }

        private void btnKetNoi_Click(object sender, EventArgs e)
        {
            string error = "";
            if(txtTenCSDL.Text.Equals(""))
            {
                error += "Bạn chưa nhập tên cho Cơ Sở Dữ Liệu. \r\n";
            }
            if (txtTenCSDL.Text.Equals(""))
            {
                error += "Bạn chưa nhập tên cho Server. \r\n";
            }
            if (cbxAu.SelectedItem == null)
            {
                error += "Bạn chưa chọn Authentication. \r\n";
            }
            else
            {

                if (cbxAu.SelectedItem.ToString() == "SQL Server Authentication")
                {
                    if (txtUser.Text.Equals(""))
                    {
                        error += "Bạn chưa nhập User ID. \r\n";
                    }
                    if (txtPass.Text.Equals(""))
                    {
                        error += "Bạn chưa nhập password. \r\n";
                    }
                }
            }

            if (!error.Equals(""))
            {
                XtraMessageBox.Show(error, "Thông báo!!!", MessageBoxButtons.OK);
                return;
            }

            SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();

            if (cbxAu.SelectedItem.ToString() == "SQL Server Authentication")
            {
                builder.DataSource = txtServer.Text;
                builder.InitialCatalog = txtTenCSDL.Text;
                builder.UserID = txtUser.Text;
                builder.Password = txtPass.Text;
            }
            else
            {
                if (cbxAu.SelectedItem.ToString() == "Windows Authentication")
                {
                    builder.DataSource = txtServer.Text;
                    builder.InitialCatalog = txtTenCSDL.Text;
                    builder.IntegratedSecurity = true;
                }
            }

            string connectionString = builder.ToString();

            SqlConnection conn = new SqlConnection(connectionString);
            try
            {
                conn.Open();
                Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
                config.ConnectionStrings.ConnectionStrings["MyConnectString"].ConnectionString = connectionString;
                config.Save(ConfigurationSaveMode.Modified, true);
                ConfigurationManager.RefreshSection("connectionStrings");

                TenCSDL = builder.InitialCatalog;
                if(XtraMessageBox.Show("Kết nối thành công.\n", "Thông báo!!!", MessageBoxButtons.OK) == DialogResult.OK)
                    this.Close();
            }
            catch
            {
                XtraMessageBox.Show("Không thể kết nối với Cơ Sở Dữ Liệu.\n Vui lòng kiểm tra lại.\n", "Thông báo!!!", MessageBoxButtons.OK);
            }            
        }

        private void btnThoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void cbxAu_SelectedIndexChanged(object sender, EventArgs e)
        {
            if(cbxAu.SelectedItem.ToString() == "SQL Server Authentication")
            {
                txtUser.Enabled = true;
                txtPass.Enabled = true;
            }

            if (cbxAu.SelectedItem.ToString() == "Windows Authentication")
            {
                txtUser.Enabled = false;
                txtPass.Enabled = false;
            }
        }
    }
}